--- title: '论文阅读-physics-informed-deep-learning' date: 2019-03-12 permalink: /posts/2019/03/12/blog-post-2/ tags: - PDE - DNN ---
文章主要解决两个问题:
1找到方程的解
2找到方程的参数
data-driven solution and data-driven discovery of partial differential equations.
数据少的时候,CNN,RNN等方法训练出来的结果缺少鲁棒性。
目标:尽可能多地 结合已知的先验信息(属于什么方程,边界条件等)
leverage their well known capability as universal function approximators
将神经网络作为对方程的近似
方程:
def u(t, x):
u = neural_net(tf.concat([t,x],1), weights, biases)
return u
def f(t, x):
u = u(t, x)
u_t = tf.gradients(u, t)[0]
u_x = tf.gradients(u, x)[0]
u_xx = tf.gradients(u_x, x)[0]
f = u_t + u*u_x - (0.01/tf.pi)*u_xx
return f
损失函数为
表示u的初始和边界条件上的训练数据
表示f对应的点(这些数据是不需要测量获取的)
表示对边界条件的约束,
表示方程的约束
优化器选择:L-BFGS(full batch)
该方法无法进行收敛性分析,经验上如果问题是well-posed 并且 解唯一 ,可以有较好的效果
只要少量的边界点初始点就可以学习到方程的信息
足够时
越多,效果越好
训练时间:单GPU训练只要60秒
模型用的是9层20个结点的网络
u表示h的实数部分,v表示h的虚数部分
输入为x,t,输出为
表示边界值,
表示初值,
表示方程
只需要t=0处的数据。
当维数增加时,不止是一维或二维,需要的的数量指数级增长
用q阶Runge-Kutta方法:
是
时的数据,学习到方程的特征和
之间的关系
是边界条件的约束
是
使用了250个上
的数据,使用500阶的R-K,计算t=0.9时的结果
使用4层50结点的神经网络,相对误差
层数与结点对实验的影响:
q与对结果的影响:
只要少量的t=0.1 上的点,就可以很好地n Physics Models: Deep Learning of Nonlinear Partial Differential Equations预测出t=0.9 时的结果。
在Allen-Cahn 方程上有同样的效果。
用类似上面的方法对参数进行估计。
训练数据:
分布在所有时间和空间上的,计算f的点也是相同的点
用了2000个点和9层20结点的神经网络
鲁棒性:在噪声环境下也有很好的效果。(猜测:因为是直接对方程的特征进行学习,所有数据干扰影响较小)
可能是因为的数值比较小,所以相对误差比较大
不需要特殊的调参就有比价好的结果
9层20节点的神经网络,5000个数据
不需要任何关于p的数据就成功地算出p的值
需要全部空间时间的数据才能训练出好的效果
用时刻上的数据算出
的值
损失是在上u的均方误差
其中,
做为可训练的Varible一起训练
只用了两个时间点的少量数据,算出了的值,具有一定的鲁棒性
用两个神经网络分别对u和N进行拟合